#pragma once
#include <string>
#include <vector>
//#include "ComponentsHolder.h"

enum FlashPolicy { Regular=0, InsertTOBoth, FAST };

class SimulationParameters
{
public:
	static int CacheAlignment;
	static double SimulationTime;
	static int CacheSize;
	static int FlashSize;
	static std::string CachePolicy;
	static int CacheReadPart;
	static int SATACount;
	static int FCCount;
	static int SSDCount;
	static double WriteAllowance;
	static bool UseCache;
	static int BringNextExtents;
	static int SequentialTimeDiff;
	static bool ConsiderHits;
	static bool UsePriority;
	static std::vector<double> group_percents;
	static std::string algo;
	static int exchange_limit;
	static std::vector<double> desiredRT;
	static std::string AllFiles;
	static std::string IOFileName;
	static std::string PriorityFile;
	static std::string AggregatedFile;
	static std::string OutputDirectory;
	static int NumberOfRounds;
	static bool StaticPlacements;
	static std::vector<std::string> dataFiles;
	static int SSDSize;
	static int FCSize;
	static int SATASize;
	static int placementDistribution;
	//static bool insertToBothCaches;
	static FlashPolicy flashPolicy;
	static void init();


		// just for debug
	static void SimulationParameters::splitFile( int jump );
private:
	static void readUserInput();
	static void readParameters();
	static void readStorageCharacteristics();
	static void updateDate();
	static void createGroupsPriorityFiles();
	static bool createGroupsPriorityFiles(int g1, int g2, int g3, int total=130);

};
